﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Fuyao.Business.Entities.Models;
using Fuyao.Business.Logic.BC;
using Fuyao.Win.UI.Util;
using Fuyao.Win.UI.Common;

namespace Fuyao.Win.UI.Mantenimientos
{
    public partial class frmVendedores : Form
    {
        #region Propiedades
        public string titleForm { get; set; }
        public bool valOpcion { get; set; }
        public bool action { get; set; }
        public Vendedor beVend { get; set; }
        #endregion

        BusinessLogic bc = new BusinessLogic();

        public frmVendedores()
        {
            InitializeComponent();
        }

        private void frmVendedores_Load(object sender, EventArgs e)
        {
            action = false;
            this.Text = titleForm;
            this.cboEstado.SelectedIndex = 0;
            if (valOpcion) this.cboEstado.Enabled = false;
            else this.cboEstado.Enabled = true;
            if (beVend != null) cargarDatosVendedor(beVend);   
        }

        private void cargarDatosVendedor(Vendedor beVend)
        {
            this.txtNombres.Text = beVend.NombreVendedor;
            this.txtNombres.Tag = beVend.VendedorID;
            this.txtApellidos.Text = beVend.ApellidoVendedor;
            this.cboEstado.SelectedIndex = (beVend.Estado == true ? 0 : 1);
        }

        private Vendedor llenarEntidad()
        {
            Vendedor beVendedor = new Vendedor();
            beVendedor.VendedorID = Convert.ToInt32(this.txtNombres.Tag);
            beVendedor.NombreVendedor = this.txtNombres.Text.Trim();
            beVendedor.ApellidoVendedor = this.txtApellidos.Text.Trim();
            beVendedor.Estado = this.cboEstado.SelectedIndex == 0 ? true : false;
            beVendedor.CreadoPor = VariablesGlobales.GlobalEnUsuario.UsuarioID;
            return beVendedor;
        }

        private void btnGrabar_Click(object sender, EventArgs e)
        {
            if (validarCamposRequeridos())
            {
                if (valOpcion) //true:Insert
                {
                    if (bc.InsertVendedor(llenarEntidad()))
                    {
                        MessageBox.Show("Se ingresaron los datos correctamente", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        cerrarForm();
                    }
                    else
                        MessageBox.Show("Error al ingresar los datos, contacte con Sistemas", "Sistema FUYAO - Mensaje de Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else //true:Editar
                {
                    if (bc.UpdateVendedor(llenarEntidad()))
                    {
                        MessageBox.Show("Se actualizaron los datos correctamente", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        cerrarForm();
                    }
                    else
                        MessageBox.Show("Error al actuallizar los datos, contacte con Sistemas", "Sistema FUYAO - Mensaje de Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
        }

        private void cerrarForm()
        {
            this.Close();
            action = true;
        }

        private bool validarCamposRequeridos()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("Ingrese los campos requeridos: " + System.Environment.NewLine);

            bool isValid = true;

            if (String.IsNullOrEmpty(txtNombres.Text))
            {
                sb.Append("- Nombres" + System.Environment.NewLine);
                ErrorProv.SetError(txtNombres, "Ingrese el nombre del vendedor");
                isValid = false;
            }

            if (String.IsNullOrEmpty(txtApellidos.Text))
            {
                sb.Append("- Apellidos" + System.Environment.NewLine);
                ErrorProv.SetError(txtApellidos, "Ingrese el apellido del vendedor");
                isValid = false;
            }          

            if (!isValid)
                MessageBox.Show(sb.ToString(), "Sistema FUYAO - Validando opción", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            return isValid;
        }
        
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            if (valOpcion)
            {
                foreach (Control c in groupBox1.Controls) if (c is TextBox) ((TextBox)c).Text = string.Empty;           
            }
            else resetDatosControles(); //else:Edit   
        }

        private void resetDatosControles()
        {
            cargarDatosVendedor(beVend);
        }

        private void frmVendedores_KeyPress(object sender, KeyPressEventArgs e)
        {
            Utilitarios.cerrarFormularioEscape(e, this);
        }

        private void txt_TextChanged(object sender, EventArgs e)
        {
            TextBox tbx = (TextBox)sender;
            ErrorProv.SetError(tbx, "");
        }
    }
}
